#pragma once
#include <boost/function.hpp>
#include <deque>

#define CatanTest(X) CatanStratryTest::Instance().X

namespace catan
{
	class PlayerItemBuildController;
	class ITest
	{
		void OnTest();
	};
	
	class CatanStratryTest
	{
	public:
		CatanStratryTest(void);
		~CatanStratryTest(void);
		static CatanStratryTest& Instance()
		{
			static CatanStratryTest st;
			return st;
		}

		void DoAll()
		{
			DoItemBuild();
		}

		void OnItemBuild(PlayerItemBuildController& playerItemBuildController);
		void DoItemBuild();
		std::deque<std::pair<PlayerItemBuildController*, int>> mItemBuilds;
		//std::vector<boost::function<void> > mExcuteList;
	};
}